/*
 * @lc app=leetcode.cn id=704 lang=cpp
 *
 * [704] 二分查找
 */

// @lc code=start
class Solution
{
public:
    int search(vector<int> &nums, int target)
    {
        //二分法 首先是有序数据且不重复
        //二分法最重要的就是区间 主要画图理解
        //这里采用左闭右开区间
        int left = 0;
        int right = nums.size();
        /*第一种写法  zuo
        while (left < right)
        {
            int mid = left + (right - left) / 2; //避免溢出
            if (nums[mid] == target)
            {
                return mid;
            }
            else if (nums[mid] > target)
            {
                right = mid;//搜索范围是[left,right)
            }
            else
            {
                left = mid+1;
            }
        }
        return -1;
    }
};
// @lc code=end
